package map;

import java.util.HashMap;
import java.util.Map;

/**
 * java.util.Map接口 查找表
 * Map体现的样子是一个多行两列的表格，其中左列称为key，右列称为value。Map总是根据key获取
 * 对应的value。
 * Map有一个要求，key不允许重复(key的equals作为判定重复的标准)
 *
 * 常见实现类:
 * java.util.HashMap:散列表，使用散列算法实现的Map
 */
public class MapDemo1 {
    public static void main(String[] args) {
        Map<String,Integer> map = new HashMap<>();
        /*
            V put(K k,V v)
            将一组键值对存入Map，
            返回值有两种情况:
                1:当key不存在时，返回值为null。
                2:当key已经存在，则是替换value操作，此时返回值为被替换的value。

         */
        Integer i = map.put("语文",99);
        /*
            Map的value类型若是包装类，在接收value的值时应当使用包装类类型，避免使用对应的
            基本类型变量接收。避免因为返回值为null导致自动拆箱时出现空指针!
         */
//        int i = map.put("语文",99);//会出现空指针
        System.out.println(i);
        map.put("数学",98);
        map.put("英语",97);
        map.put("物理",96);
        map.put("化学",99);
        System.out.println(map);

        i = map.put("数学",77);//重复的key则是替换value操作
        System.out.println(map);
        System.out.println(i);

        /*
            V get(Object key)
            根据给定的key获取对应的value。如果Map中给定的key不存在则返回值为null。
         */
        i = map.get("语文");
        System.out.println("语文:"+i);
        i = map.get("体育");
        System.out.println("体育:"+i);


        System.out.println(map);
        /*
            V remove(Object key)
            删除给定的key对应的这组键值对，返回值为该key对应的value。
         */
        i = map.remove("数学");
        System.out.println(map);
        System.out.println(i);

        int size = map.size();
        System.out.println("size:"+size);
    }
}
